package ar.edu.utn.frba.tacs.warnes.rest;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.restlet.resource.Get;
import org.restlet.resource.Post;

import ar.edu.utn.frba.tacs.warnes.aop.Utils;
import ar.edu.utn.frba.tacs.warnes.excepciones.RestException;
import ar.edu.utn.frba.tacs.warnes.pieza.Pieza;
import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;
import ar.edu.utn.frba.tacs.warnes.utils.ConstantesWarnes.Categoria;

import com.thoughtworks.xstream.XStream;

public class PiezaResource {
	XStream xstream = new XStream();
	private final String dir = System.getProperties().getProperty("user.dir");

	@Get
	public String getPiezaPorId(Long id) {
		Pieza pieza;
		pieza = ContenedorWarnes.getInstance().getPiezas(id).get(0);
		return this.guardarPieza(pieza);
	}

	@Post
	public String guardarPieza(Pieza pieza) {
		String xml;
		String ruta = dir + "\\rest\\pieza\\";
		xml = xstream.toXML(pieza);
		try {
			Utils.grabarArchivoADisco(ruta, "pieza-id=" + pieza.getId()
					+ ".xml", xml);
		} catch (IOException ex) {
			throw new RestException(ex.getMessage());
		}
		return xml;
	}

	
	@Get
	public String getPiezaPorCategoria(Categoria categoria) {
		List<Pieza> piezas = new ArrayList<Pieza>();
		piezas = ContenedorWarnes.getInstance().getPiezas(categoria);
		return this.guardarPiezasEnCategoria(piezas, categoria);
	}

	@Post
	public String guardarPiezasEnCategoria(List<Pieza> piezas, Categoria categoria) {
		String xml;
		String ruta = dir + "\\rest\\pieza\\";
		xml = xstream.toXML(piezas);
		try {
			Utils.grabarArchivoADisco(ruta, "piezas-categoria=" + categoria.toString()
					+ ".xml", xml);
		} catch (IOException ex) {
			throw new RestException(ex.getMessage());
		}
		return xml;
	}
}
